// 2014-02-01 Tyrghen
//---------------------------------------------
// Usage:
//  [object, 200] call edt_fnc_setATLHeight;
//---------------------------------------------
// Purpose:
// Sets the height above the current terrain for the given object. Not taking into account objects between the ground and itself.
// 
// Parameters:
// - The object we want to change it's height
// - The height Above Terrain Level to give to the object. 
//
// Returns:
// - The object Above Terrain Level position.
//---------------------------------------------
// Objectif:
// Etabli la hauteur au dessus du sol de l'objet donné. Sans prendre en considération les objets entre le sol et lui-même.
//
// Paramètres:
// - L'objet dont on veut changer la hauteur.
// - La hauteur Au dessus du Niveau du Terrain a donner à l'objet.
//
// Renvoie:
// - La position Au dessus du Niveau du Terrain de l'objet.
//---------------------------------------------

//#define __FORCE_TRACE__
//#define __FORCE_DEBUG__
//#define __FORCE_INFO__
#define THIS_FILE "editor\fn_setATLHeight.sqf"
#include <tmf_constants.h>
#include <tmf_macros.h>

TRACE_1("Start",_this);
TMFPROFILERSTART;

private ["_object","_position","_height"];
DEFAULT_PARAM(_object,0,objNull);
DEFAULT_PARAM(_position,1,0);
DEFAULT_PARAM(_height,2,"");

if (!isnull _object) then {
	if (IS_ARRAY(_position)) then {
		if (!IS_SCALAR(_height)) then {
			if (count _position == 3) then {
				_object setPosATL _position;
			} else {
				_object setPosATL [((getPosATL _object) select 0),((getPosATL _object) select 1),(_position select ((count _position) -1))];
			};
		} else {
			if (count _position == 3) then {
				_object setPosATL [(_position select 0),(_position select 1),_height];;
			} else {
				_object setPosATL [((getPosATL _object) select 0),((getPosATL _object) select 1),_height];
			};
		};
	} else {
		if (IS_SCALAR(_position)) then {
			_object setPosATL [((getPosATL _object) select 0),((getPosATL _object) select 1),_position];
		};
	};
};

TRACE_1("End",_height);
TMFPROFILERSTOP;
if (!isnull _object) then { getPosATL _object; } else { [0,0,0] };